package zoo.gwt.client;

import java.util.ArrayList;
import java.util.List;
import com.google.gwt.user.client.Window; 
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

/**
 * Entry point classes define <code>onModuleLoad()</code>.
 */
public class Zoologico implements EntryPoint {

	private List<Habitat> habitats = new ArrayList<Habitat>();
	
	private Menu menu = new Menu(this);
	private ZooGrid zooGrid = new ZooGrid(this);
	private Header header = new Header(this);
	
	private String zooName = " ";
	private String habitatAtual = " ";
	private int corHabitat = 1;

	private boolean criarHabitat = false;
	private boolean excluirHabitat = false;
	private boolean algumBotaoClicado = false;

	/**
	 * Entry point method.
	 */
	public void onModuleLoad() {
		RootPanel.getBodyElement().setId("body");
		showLogin();
		hideLoginInterface();
		showGameInterface();
	}

	public void showLogin() {
		zooName = Window.prompt(
				"Bem Vindo ao Zoo World! Em qual zoológico deseja trabalhar?",
				"");
	}

	private void hideLoginInterface() {
		RootPanel.get("login").setStyleName("hide");
	}

	private void showGameInterface() {
		menu.montarMenu();
		zooGrid.montarZooGrid();
		header.montarHeader();

		RootPanel.get("jogo").setStyleName("show");
	}

	public void setCriarHabitat(boolean b) {
		criarHabitat = b;
	}

	public boolean isCriarHabitat() {
		return criarHabitat;
	}

	public void setExcluirHabitat(boolean b) {
		excluirHabitat = b;
	}

	public boolean isExcluirHabitat() {
		return excluirHabitat;
	}

	public String getNomeHabitat() {
		return Window.prompt("Qual o nome do habitat?", habitatAtual);
	}

	public List<Habitat> getHabitats() {
		return habitats;
	}

	public void setHabitats(List<Habitat> habitats) {
		this.habitats = habitats;
	}

	public String getNomeHabitatAtual() {
		return this.habitatAtual;
	}
	
	public void setNomeHabitatAtual(String habitat) {
		this.habitatAtual = habitat;
	}

	public void alteraCorHabitat() {
		if (corHabitat < 5)
			corHabitat++;
		else
			corHabitat = 1;
	}

	public int getCorHabitat() {
		return corHabitat;
	}

	public boolean isAlgumBotaoClicado() {
		return algumBotaoClicado;
	}

	public void setAlgumBotaoClicado(boolean b) {
		algumBotaoClicado = b;
	}
	
	public RootPanel getRootPanelElement(String id) {
		return RootPanel.get(id);
	}
	
	public String getZooName () {
		return zooName;
	}
	
	public void addHabitat(Habitat habitat) {
		this.habitats.add(habitat);
	}
	
	public boolean hasHabitat(String nome) {
		for(Habitat h : habitats) {
			if(h.getNome().equals(nome))
				return true;
		}
		return false;
	}

	public ZooGrid getZooGrid() {
		return zooGrid;
	}

	public void setZooGrid(ZooGrid zooGrid) {
		this.zooGrid = zooGrid;
	}
	
}
